//配置axios的全局基本路径
axios.defaults.baseURL='http://localhost:8080/'
//全局属性配置，在任意组件内可以使用this.$http获取axios对象
Vue.prototype.$http = axios

//======================axios的前置拦截器：每次发送axios请求之前都要执行这个代码====================//
axios.interceptors.request.use(res=>{
    //从localStorage中获取token
    let token = localStorage.getItem("token");
    if(token){
        //将token设置到请求头：key：value = token：3a394c8f-9df0-49b5-8546-0bcaece33761
        res.headers["token"] = token;
    }
    return res;
},error => {
    Promise.reject(error)
})
//======================axios的前置拦截器【拦截调用后端的请求】====================//

//======================axios的后置拦截器【处理后台登录拦截的结果json数据】====================//
axios.interceptors.response.use(res => {
    //后端响应的是没有登录的信息
    if (false === res.data.success && "noLogin" === res.data.message) {
        //30分钟过期是redis过期，但是前端本地存储还在
        localStorage.removeItem("token");
        localStorage.removeItem("logininfo");
        //调转到登录页面
        location.href="/login.html";
    }
    return res;
},error => {
    Promise.reject(error)
})

//======================axios的后置拦截器【处理后台登录拦截的结果】====================//

// 静态资源拦截器
// 如果访问的不是登录页面和注册页面判断是否登录，就判断你是否登录，没有登录就跳转到登录页面
// 1.获取地址栏
            var  url = location.href;
// 判断地址栏是否是登录或者注册
            if (url.indexOf("/login.html"==-1) && url.indexOf("/register.html"==-1)
                && url.indexOf("/binder.html"==-1) && url.indexOf("/callback.html"==-1)){
                // 查询是否有logininfo数据
                let logininfo = localStorage.getItem(logininfo);
                if (!logininfo) {// 没有登录信息就跳转到登录页面
                    location.href = "/login.heml";
                }
            }


//封装公用方法 - 将字符串的参数解析为json对象
function parseUrlParams2Obj(url) {//xxx?code=xxx&state=1
    let paramStr = url.substring(url.indexOf("?")+1);//code=xxx&state=1
    let paramArr = paramStr.split("&");//[code=xxx,state=1]
    let paramObj = {};
    for(let i = 0;i<paramArr.length;i++){
        let paramTemp = paramArr[i];//code=xxx
        let paramName = paramTemp.split("=")[0];//code
        let paramValue= paramTemp.split("=")[1];//xxx
        paramObj[paramName] = paramValue;//{code:xxx,state:1}
    }
    return paramObj;
}